import 'package:pcms/models/status_models.dart';
import 'package:pcms/models/alarm_models.dart';
import 'package:pcms/models/production_data_models.dart';
import 'package:pcms/models/maintenance_models.dart';
import 'package:pcms/services/api_service.dart';

// Note: This is a simplified configuration. In a real application, this would likely come from a database or a configuration file (e.g., JSON).

// ######### RUNNING STATUS CONFIGURATION #########

/// 获取设备信息配置数据
/// 从REST API获取方舱运行状态数据
Future<List<Map<String, dynamic>>> getDeviceInfoConfig() async {
  try {
    // 尝试获取方舱运行状态数据
    List<Map<String, dynamic>> data = await ApiService.getPointDataList(
      moduleName: '运行状态',
      category: '方舱运行状态',
    );
    
    print('设备配置API调用结果，数据条数: ${data.length}');
    
    // 如果方舱运行状态数据为空，尝试获取其他相关数据
    if (data.isEmpty) {
      print('方舱运行状态数据为空，尝试获取所有运行状态数据...');
      // 可以尝试不指定category，获取所有运行状态数据
      try {
        final allData = await ApiService.getPointDataList(
          moduleName: '运行状态',
          category: '', // 空字符串可能返回所有数据
        );
        if (allData.isNotEmpty) {
          data = allData;
          print('获取到所有运行状态数据，条数: ${data.length}');
        }
      } catch (e) {
        print('获取所有运行状态数据失败: $e');
      }
    }
    
    if (data.isNotEmpty) {
      print('第一条数据示例: ${data.first}');
    }
    
    // 将API数据转换为设备信息配置格式
    return data.map<Map<String, dynamic>>((item) {
      return {
        'name': item['cabin_name'] ?? '未知设备',
        'cubicleNo': item['cabin_id'] ?? '',
        'deviceNo': item['device_id'] ?? '',
        'tag': item['tag'] ?? '',
        'point_value': item['point_value'] ?? 0, // 保留原始point_value用于状态判断
      };
    }).toList();
  } catch (e) {
    print('获取设备信息配置失败: $e');
    // 返回默认的mock数据作为fallback
    return _getDefaultDeviceInfoConfig();
  }
}

/// 默认的设备信息配置（作为fallback）
List<Map<String, dynamic>> _getDefaultDeviceInfoConfig() {
  return [
    for (var i = 1; i <= 15; i++)
      {
        'name': '收奶、膜',
        'cubicleNo': '${i}#',
        'deviceNo': 'PLC${(i / 4).ceil().toString().padLeft(3, '0')}',
        'tag': 'FAN${i.toString().padLeft(2, '0')}a',
      },
  ];
}

/// 同步获取默认设备信息配置（用于向后兼容）
@deprecated
final List<Map<String, dynamic>> deviceInfoConfig = _getDefaultDeviceInfoConfig();

final List<Map<String, dynamic>> xf01AirConditionerConfig = [
  {
    'label': '排风机状态',
    'address': 'DB3.DBX42.0',
    'dataType': 'BOOL',
    'statusDesc': '（0=关闭，1=打开）',
  },
  {
    'label': '送风机状态',
    'address': 'DB3.DBX42.1',
    'dataType': 'BOOL',
    'statusDesc': '（0=关闭，1=打开）',
  },
];

final List<Map<String, dynamic>> xf02AirConditionerConfig = [
  {
    'label': '排风机状态',
    'address': 'DB3.DBX42.0',
    'dataType': 'BOOL',
    'statusDesc': '（0=关闭，1=打开）',
  },
  {
    'label': '送风机状态',
    'address': 'DB3.DBX42.1',
    'dataType': 'BOOL',
    'statusDesc': '（0=关闭，1=打开）',
  },
];

final List<Map<String, dynamic>> airSourceUnitConfig = [
  {'label': '机组运行', 'address': 'DB5.DBX14.0', 'dataType': 'BOOL', 'statusDesc': '0=关闭，1=运行'},
  {'label': '电动水阀', 'address': 'DB5.DBX14.1', 'dataType': 'BOOL', 'statusDesc': '0=关闭，1=运行'},
  {'label': '电辅热', 'address': 'DB5.DBX14.2', 'dataType': 'BOOL', 'statusDesc': '0=关闭，1=运行'},
  {'label': '循环水泵1', 'address': 'DB5.DBX14.3', 'dataType': 'BOOL', 'statusDesc': '0=关闭，1=运行'},
  {'label': '循环水泵2', 'address': 'DB5.DBX14.4', 'dataType': 'BOOL', 'statusDesc': '0=关闭，1=运行'},
];